// 《围棋》作者版权所有。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package cpu

const CacheLinePadSize = 32

// arm没有“cpuid”等价物，所以我们依赖于HWCAP/HWCAP2。
// 这些是由archauxv（）初始化的，在初始化后不应更改。
var HWCap uint
var HWCap2 uint

// HWCAP/HWCAP2位。这些都是由Linux和FreeBSD公开的。
const (
	hwcap_VFPv4 = 1 << 16
	hwcap_IDIVA = 1 << 17
)

func doinit() {
	options = []option{
		{Name: "vfpv4", Feature: &ARM.HasVFPv4},
		{Name: "idiva", Feature: &ARM.HasIDIVA},
	}

	// HWCAP特征位
	ARM.HasVFPv4 = isSet(HWCap, hwcap_VFPv4)
	ARM.HasIDIVA = isSet(HWCap, hwcap_IDIVA)
}

func isSet(hwc uint, value uint) bool {
	return hwc&value != 0
}
